#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：tools 
@File ：屏幕取点监控.py
@IDE  ：PyCharm 
@Author ：李涵彬
@Date ：2024/12/17 下午1:37 
"""

import pyautogui
import tkinter as tk
from tkinter import messagebox
import time


def select_point():
	"""
	提示用户将鼠标移动到目标位置并记录鼠标的坐标。
	"""
	print("请将鼠标移动到你想要监测的屏幕位置，3秒后自动记录坐标...")
	time.sleep(3)  # 等待3秒，给用户时间移动鼠标
	x, y = pyautogui.position()  # 获取鼠标位置
	print(f"已选择坐标: ({x}, {y})")
	return x, y


def monitor_color_change(x, y, interval=0.5):
	"""
	监控指定屏幕坐标的颜色变化。
	:param x: 监控点的x坐标
	:param y: 监控点的y坐标
	:param interval: 检测间隔时间（单位：秒）
	"""
	time.sleep(3)  # 等待3秒，给用户时间移动鼠标
	print("开始监控颜色变化，按 Ctrl+C 停止程序...")
	original_color = pyautogui.pixel(x, y)  # 获取初始颜色
	print(f"初始颜色: {original_color}")

	try:
		while True:
			current_color = pyautogui.pixel(x, y)  # 获取当前颜色
			if current_color != original_color:
				print(f"检测到颜色变化: {original_color} -> {current_color}")
				# 弹出提示框
				show_alert(f"检测到坐标 ({x}, {y}) 的颜色发生变化！\n"
						   f"原始颜色: {original_color}\n当前颜色: {current_color}")
				break  # 结束监控
			time.sleep(interval)  # 等待一段时间再检查
	except KeyboardInterrupt:
		print("程序已手动停止。")


def show_alert(message):
	"""
	弹出一个前台提示框。
	"""
	root = tk.Tk()
	root.withdraw()  # 隐藏主窗口
	messagebox.showinfo("颜色变化监测", message)
	root.destroy()


if __name__ == "__main__":
	# 步骤1: 选择要监控的点
	x, y = select_point()

	# 步骤2: 开始监控颜色变化
	monitor_color_change(x, y)
